package com.easyadmin.service;


import com.easyadmin.entity.enums.TaskStatusEnum;
import com.easyadmin.entity.po.SysTask;
import com.easyadmin.entity.query.SysTaskQuery;
import com.easyadmin.entity.vo.PaginationResult;
import com.easyadmin.exception.BusinessException;

import java.util.List;


/**
 * 任务调度 业务接口
 */
public interface SysTaskService {

    /**
     * 根据条件查询列表
     */
    List<SysTask> findListByParam(SysTaskQuery param);

    /**
     * 根据条件查询列表
     */
    Integer findCountByParam(SysTaskQuery param);

    /**
     * 分页查询
     */
    PaginationResult<SysTask> findListByPage(SysTaskQuery param);

    /**
     * 新增
     */
    Integer add(SysTask bean) throws BusinessException;

    /**
     * 批量新增
     */
    Integer addBatch(List<SysTask> listBean);

    /**
     * 批量新增/修改
     */
    Integer addOrUpdateBatch(List<SysTask> listBean);

    /**
     * 根据TaskId修改
     */
    Integer updateByTaskId(SysTask bean, Integer taskId);


    /**
     * 根据TaskId删除
     */
    Integer deleteByTaskId(Integer taskId);


    /**
     * 根据TaskId查询对象
     */
    SysTask getSysTaskByTaskId(Integer taskId);

    /**
     * 保存任务
     * @param sysTask
     * @exception BusinessException
     */
    void saveTask(SysTask sysTask, Boolean immediatelyRun) throws BusinessException;

    /**
     * 立即执行任务
     * @param taskId
     * @exception BusinessException
     */
    void immediatelyRunTask(Integer taskId) throws BusinessException;


    /**
     * 暂停开启任务
     * @param taskId
     * @exception BusinessException
     */
    void suspendAndStartTask(Integer taskId, Integer opType) throws BusinessException;

    /**
     * 删除任务
     * @param taskId
     * @exception BusinessException
     */
    void deleteTask(Integer taskId) throws BusinessException;

    void editTaskQueue(SysTask sysTask, TaskStatusEnum taskStatus);
}